package views.mediators
{
	import com.axon.mvc.patterns.mediator.AxMediatorPopUp;
	
	import flash.display.DisplayObject;
	
	import helpers.Constants;
	import helpers.Verbs;
	
	import models.vo.Pleito;
	import models.vo.User;
	
	import views.components.PleitoPopUpDistribuicaoView;

	public class PleitoPopUpDistribuicaoMediator extends AxMediatorPopUp
	{
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function PleitoPopUpDistribuicaoMediator( parent: DisplayObject, vo: Object	= null )
		{
			super(	  parent, 
					  vo, 
					{ model : User, requestName : Verbs.LIST_ANALISTAS }, 
					{ text : "Falha na leitura dos analistas." } );
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		private function get view(): PleitoPopUpDistribuicaoView { return viewComponent as PleitoPopUpDistribuicaoView; }
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		override protected function initialize(): void 
		{
			regResponseInterest( Pleito, [Verbs.DISTRIBUIR] );
		}	
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function eventEnableGestures(): void
		{
			view.pbOk.enabled	=	( (view.cmbAnalista1.selectedItem) 
								&& 	  (User(view.cmbAnalista1.selectedItem).cpf != "")
								&&	  (view.cmbAnalista1.selectedItem != view.cmbAnalista2.selectedItem) );
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function eventOk(): void
		{
			Pleito(view.vo).getAnalise().analista_1 = User(view.cmbAnalista1.selectedItem);
			Pleito(view.vo).getAnalise().analista_2 = User(view.cmbAnalista2.selectedItem);
			
			callController( Pleito, Verbs.DISTRIBUIR, view.vo );
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		override public function handleResponseNeededToShowSuccess(sender: Object, body: Object, extraInfo: Object): void
		{
			var wVo: Object = fVo;
			
			super.handleResponseNeededToShowSuccess(sender, body, extraInfo);

			fVo		= wVo
			view.vo	= wVo;

			(body as Array).splice(0, 0, new User());
			
			view.title = (Pleito(view.vo).status == Constants.STATUS_PLEITO_DISTRIBUICAO) ? 'Distribuição' : 'Redistribuição';
			view.listaAnalistas = (body as Array);
			
			if ( Pleito(view.vo).status == Constants.STATUS_PLEITO_DISTRIBUICAO ) {
				view.cmbAnalista1.selectItemById("");
				view.cmbAnalista2.selectItemById(""); }
			else {
				view.cmbAnalista1.selectItemById(Pleito(view.vo).getAnalise().getAnalista1().id);
				view.cmbAnalista2.selectItemById(Pleito(view.vo).getAnalise().getAnalista2().id); }
		}
				
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function respPleitoDistribuirSuccess( sender: Object, body: Object, extraInfo: Object ): void
		{
			view.vo = body;
			closePopUp();
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function respPleitoDistribuirFailure( sender: Object, body: Object, extraInfo: Object ): void
		{
			view.errorString = "Falha na gravação dos documentos adicionais";
		}

	}
}